Arne Brasseur
Freelance Ruby Dev
Twitter / Github : @plexus
Worldwide
Many different platforms
Has scaled like no other
Has evolved while largely keeping compatibility
WWW starts to really take off
Concerns about early performance of HTTP
IETF gets to work on improved URI, HTTP, HTML
low entry barrier
incremental deployment
transparent references/identifiers
extensible
simple
Little to do with the web
Perceived as light weight compared to CORBA
RPC style
Pragmatic
KISS
XML JSON
But..
Ad-hoc
RPC
Fielding gets revisited
Rails comes up with CRUD+JSON
Calls it REST
Fielding throws a hissy fit
the information becomes the affordance through which the user (or automaton) obtains choices and selects actions.
The set of possible actions the user is made aware of
Media (graphics, video, text) intertwined with hyperlinks, to form a non-linear medium of information
Define media types
Define link relations
Drive application state through hypermedia controls
Example:
{
"id": 79,
"name": "Leicester Square Theatre",
"_links": {
"self": {
"href": "/api/accounts/79"
},
"http://api.ticketsolve.com/rel/shows": {
"href": "/api/shows"
},
"http://api.ticketsolve.com/rel/venue": {
"href": "/api/venues/{id}",
"templated": true
}
}
}
Discoverable API
Simple client, simply follow links
Change location of resources
Evolve API in backwards compatible way
References can be laid across systems, across orgs
Will depend on standardized media types, relationships
Still a lot of experimentation happening with formats
HAL
Collection+JSON
JSON-LD
Siren
JSON-API
Uber
Non-local Linking
Directory Services
Aggregators
Vendor-independent client apps